<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 两者情况都有可能

        // 情况1：先定义回调，后改变状态
        // 1. 在pormise对象的执行器内执行异步方法
        // 1.1 在异步执行中改变promise状态
        // 1.2 调用then方法，定义回调函数
        // let p = new Promise((res, rej) => {
        //     console.log("执行函数");
        //     setTimeout(() => {
        //         res('ok')
        //     }, 100);
        // })

        // p.then(val => {
        //     console.log(val);
        // });



        // 情况2：先改变状态，后定义回调
        // 2. 在promise对象的执行器中直接修改状态
        // 2.1 excutor函数是同步回调 - 所以会立即执行
        // 2.2 调用then方法，定义回调函数（then函数执行时，会主动查看promise状态） 

        // 3. promise中执行异步修改状态
        // 3.1 异步调用then（时间更久一些）

        // let p = new Promise((res, rej) => {
        //     res('ok')
        // })

        // p.then(val => {
        //     console.log(val);
        // })

        // console.log('end');
    </script>
</body>

</html>